/*
 * Network.h
 *
 *  Created on: 30/10/2011
 *      Author: godinho
 */

#ifndef NETWORK_H_
#define NETWORK_H_

#include <string>
#include <vector>

class SimulationNode;
class NodeSource;

class Network {
public:
	Network();
	virtual ~Network();

	void addNode(std::string id, int x, int y);

	void addEdge(std::string from, std::string to, int travelTime);

	void addPhase(std::string node, std::string from, std::vector<std::string> to, std::vector<int> meanFlush, int duration);

	void addSource(std::string node, std::string target, float arrivalRate);

	SimulationNode* getNode(std::string id);

	std::vector<SimulationNode*> getNodes();

	std::vector<NodeSource*> getSources();

	void normalizeNetwork();

private:
	std::vector<SimulationNode*> mNodes;

	std::vector<NodeSource*> mSources;
};

#endif /* NETWORK_H_ */
